VBScript → Lua
This function returns True if the current script user has an unconditional redirection to a user configured, where the current call already has been (in his call routing).
Please see the Introduction chapter for some usage instructions.
'----------------------------------------------------------------
' IsRedirectionLoopConfigured
'
' Checks if the undonditional redirection target of the script user is
' already in the PreviousScripts list, i.e. the call was previously already in that user's call routing.
'
' Parameter:
'
' Return:
' boolean
'----------------------------------------------------------------
Function IsRedirectionLoopConfigured
PBXScript.OutputTrace "-------------> IsRedirectionLoopConfigured"
Dim bReturn
bReturn = False
If PBXUser.UnconditionalRedirect Then
Dim sRedirectToUser
sRedirectToUser = GetUserNameFromExtension(PBXUser.UnconditionalRedirectNumber)
Dim Script
For Each Script In PBXScript.PreviousScripts
PBXScript.OutputTrace "Found user " & User.Name
If sRedirectToUser = Script.UserName Then
PBXScript.OutputTrace "Found redirection target in the PreviousScripts list. So this is most likely a loop!"
bReturn = True
End If
Next
End If
IsRedirectionLoopConfigured = bReturn
PBXScript.OutputTrace "bReturn = " & bReturn
PBXScript.OutputTrace "<------------- IsRedirectionLoopConfigured"
End Function
This function makes use of the function GetUserNameFromExtension to get the username of the destination the current script user has an unconditional redirection configured to. Afterwards it uses the Server Script API function PBXScript.PreviousScripts to search the username in the list of previous call routing scripts.
Once this function returns true the idea is to disabled the unconditional redirection to prevent a loop.
If IsRedirectionLoopConfigured Then
PBXUser.UnconditionalRedirect = False
End If
There is another function IsLoopConfigured available, following another approach to identify an existing call loop.
Please take a look into the How to avoid loops topic for more details.
This function was initially posted into this forum topic.
By Tom Wellige
